/*
 *接口编写处...
*如果接口需要做Action的权限验证，请在Action上使用属性
*如: [ApiActionPermission("Aps_ScheduleTask",Enums.ActionPermissionOptions.Search)]
 */
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using DGZImp.ApsProject.DomainModels;
using DGZImp.ApsProject.IServices;
using DGZImp.ApsProject.Dtos;
using DGZImp.Core.Utilities.Response;

namespace DGZImp.ApsProject.Controllers
{
    public partial class Aps_ScheduleTaskController
    {
        private readonly IAps_ScheduleTaskService _service;//访问业务代码
        private readonly IHttpContextAccessor _httpContextAccessor;

        [ActivatorUtilitiesConstructor]
        public Aps_ScheduleTaskController(
            IAps_ScheduleTaskService service,
            IHttpContextAccessor httpContextAccessor
        )
        : base(service)
        {
            _service = service;
            _httpContextAccessor = httpContextAccessor;
        }

        [HttpPost("GetGanttData")]
        public async Task<ApiResponse<ReqGanttTable>> GetGanttData([FromBody] ReqGanttChartData req)
        {
            var r = await _service.GetGanttChartData(req);
            return ApiRes.Success(r);
        }

        /// <summary>
        /// 获取当前以及排产的订单
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        [HttpPost("GetApsSalesOrderList")]
        public async Task<ApiResponse<PageGridData<ApsOrderInfo>>> GetApsSalesOrderList([FromBody] ReqGetSalerOrder req)
        {
            var r = await _service.GetApsSalesOrderList(req);
            return ApiRes.Success(r);
        }

        /// <summary>
        /// 下发订单
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        [HttpPost("SendTask")]
        public async Task<ApiResponse<object>> SendTask([FromBody] ReqOrderTaskData item)
        {
            var r = await _service.SendTask(item);
            return ApiRes.SuccessMsg(r);
        }

        [HttpPost("GetGanttChartDataByMachine")]
        public async Task<ApiResponse<ReqGanttTableMachine>> GetGanttChartDataByMachine([FromBody] ReqGanttChartDataByMachine req)
        {
            var r = await _service.GetGanttChartDataByMachine(req);
            return ApiRes.Success(r);
        }
    }
}
